package com.wh;

/**
 * 子类的初始化<clinit>
 * (1)j=method()
 * (2)子类的静态代码块
 * 先初始化父类
 * 初始化子类
 *
 * @author Lenovo
 * <p>
 * 子类的实例初始化：
 * (1)super()(最前)
 * (2)i=test();
 * (3)子类的非静态代码块
 * (4)子类的无参构造器(最后)
 * <p>
 * 因为创建了两个Son对象，因此实例化方法<init>执行两次
 */
public class Son extends Father {
    private int i = test();
    private static int j = method();

    static {
        System.out.print("(6)");
    }

    Son() {
        //super();//写或不写都在，在子类构造器中一定会调用父类的构造器
        System.out.print("(7)");
    }

    {
        System.out.print("(8)");
    }

    public int test() {
        System.out.print("(9)");
        return 1;
    }

    public static int method() {
        System.out.print("(10)");
        return 1;
    }

    public static void main(String[] args) {
        Son s1 = new Son();
        System.out.println();
        Son s2 = new Son();
    }

}